#ifndef POSTGRES_SQLCA_H
#define POSTGRES_SQLCA_H

#ifndef PGDLLIMPORT
#if  defined(WIN32) || defined(__CYGWIN__)
#define PGDLLIMPORT __declspec (dllimport)
#else
#define PGDLLIMPORT
#endif							/* __CYGWIN__ */
#endif							/* PGDLLIMPORT */

#define SQLERRMC_LEN	150

#ifdef __cplusplus
extern "C"
{
#endif

struct sqlca_t
{
	char		sqlcaid[8];
	long		sqlabc;
	long		sqlcode;
	struct
	{
		int			sqlerrml;
		char		sqlerrmc[SQLERRMC_LEN];
	}			sqlerrm;
	char		sqlerrp[8];
	long		sqlerrd[6];
	/* 元素 0: 空的						*/
	/* 1: 如果适用，处理的元组的 OID		*/
	/* 2: 处理的行数				*/
	/* 在 INSERT、UPDATE 或				*/
	/* DELETE 语句之后					*/
	/* 3: 空的						*/
	/* 4: 空的						*/
	/* 5: 空的						*/
	char		sqlwarn[8];
	/* 元素 0: 如果至少有一个其他为 'W' 则设置为 'W'	*/
	/* 1: 如果 'W' 至少一个字符字符串		*/
	/* 值在存储到主机变量时被截断。             */
	/*
	 * 2: 如果 'W' 发生了（希望是）非致命的通知
	 */

	/* 3: 空的 */	/* 4: 空的						*/
	/* 4: 空的						*/
	/* 5: 空的						*/
	/* 7: 空的						*/
	/* 执行 SQL 开始声明部分 */

	char		sqlstate[5];
};

struct sqlca_t *ECPGget_sqlca(void);

#ifndef POSTGRES_ECPG_INTERNAL
#define sqlca (*ECPGget_sqlca())
#endif

#ifdef __cplusplus
}
#endif

#endif
